package com.ruoyi.system.service.impl;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.ResultMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.EntityCustomerMapper;
import com.ruoyi.system.domain.EntityCustomer;
import com.ruoyi.system.service.IEntityCustomerService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.util.CollectionUtils;

/**
 * 【请填写功能名称】Service业务层处理
 * 
 * @author ruoyi
 * @date 2020-12-27
 */
@Service
public class EntityCustomerServiceImpl implements IEntityCustomerService {
    @Autowired
    private EntityCustomerMapper entityCustomerMapper;

    /**
     * 查询【请填写功能名称】
     * 
     * @param id 【请填写功能名称】ID
     * @return 【请填写功能名称】
     */
    @Override
    public EntityCustomer selectEntityCustomerById(Long id)
    {
        return entityCustomerMapper.selectEntityCustomerById(id);
    }

    /**
     * 查询【请填写功能名称】列表
     * 
     * @param entityCustomer 【请填写功能名称】
     * @return 【请填写功能名称】
     */
    @Override
    public List<EntityCustomer> selectEntityCustomerList(EntityCustomer entityCustomer)
    {
        return entityCustomerMapper.selectEntityCustomerList(entityCustomer);
    }

    /**
     * 新增【请填写功能名称】
     * 
     * @param entityCustomer 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int insertEntityCustomer(EntityCustomer entityCustomer)
    {
        entityCustomer.setCreateTime(DateUtils.getNowDate());
        return entityCustomerMapper.insertEntityCustomer(entityCustomer);
    }

    /**
     * 修改【请填写功能名称】
     * 
     * @param entityCustomer 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int updateEntityCustomer(EntityCustomer entityCustomer)
    {
        entityCustomer.setUpdateTime(DateUtils.getNowDate());
        return entityCustomerMapper.updateEntityCustomer(entityCustomer);
    }

    /**
     * 删除【请填写功能名称】对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteEntityCustomerByIds(String ids)
    {
        return entityCustomerMapper.deleteEntityCustomerByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除【请填写功能名称】信息
     * 
     * @param id 【请填写功能名称】ID
     * @return 结果
     */
    @Override
    public int deleteEntityCustomerById(Long id)
    {
        return entityCustomerMapper.deleteEntityCustomerById(id);
    }

    /**
     * 是否已存在手机号
     * @param phone
     * @return
     */
    @Override
    public boolean isExistPhone(String phone,Long id){
        int existPhone = entityCustomerMapper.isExistPhone(phone.trim(),id);
        if(0 == existPhone){
            return false;
        }else{
            return true;
        }
    }

    /**
     * 是否已存在身份证号
     * @param idCard
     * @return
     */
    @Override
    public boolean isExistIdCard(String idCard,Long id){
        int existIdCard = entityCustomerMapper.isExistIdCard(idCard.trim(),id);
        if(0 == existIdCard){
            return false;
        }else{
            return true;
        }
    }

    /**
     * 自动补全 客户
     * @param param
     * @return
     */
    @Override
    public List<EntityCustomer> queryValidCustomerByParam(String param){
        return entityCustomerMapper.queryValidCustomerByParam(param);
    }

    /**
     * 获取总有效客户数量
     * @return
     */
    @Override
    public Long getTotalCustomerCount(){
        return entityCustomerMapper.getTotalCustomerCount();
    }

    /**
     * 最近12月，每个月新增有效客户
     * @return
     */
    @Override
    public JSONObject  queryLastYearEveryMothTotalCustomerCount(){
        JSONObject jsonObject = new JSONObject();
        JSONArray arrayName = new JSONArray();
        JSONArray arrayValue = new JSONArray();
        List<ResultMap> resultMaps = entityCustomerMapper.queryLastYearEveryMothTotalCustomerCount();
        if(!CollectionUtils.isEmpty(resultMaps)){
            for(ResultMap result : resultMaps){
                arrayName.add(result.getName());
                arrayValue.add(result.getCount());
            }
        }
        jsonObject.put("X", arrayName);//键名为 X
        jsonObject.put("V", arrayValue);//键名为 V
        return jsonObject;
    }
}
